home *** CD-ROM | disk | FTP | other *** search
/ Aminet 22 / Aminet 22 (1997)(GTI - Schatztruhe)[!][Dec 1997].iso / Aminet / dev / src / ConfigFileSrc.lha / ConfigFileSrc12 / RexxLibrary / Funcs / Clone.c < prev    next >
Encoding:
Text File  |  1997-10-02  |  3.7 KB  |  165 lines

  1. /*
  2. **        $PROJECT: RexxConfigFile.library
  3. **        $FILE: Clone.c
  4. **        $DESCRIPTION: rxcf_Clone#?() functions
  5. **
  6. **        (C) Copyright 1997 Marcel Karas
  7. **             All Rights Reserved.
  8. */
  9.  
  10. IMPORT struct Library *CFBase;
  11.  
  12. /****** rexxconfigfile.library/cf_CloneArgument ******************************
  13. *
  14. *   NAME
  15. *        cf_CloneArgument -- Copy an argument node with all item nodes.
  16. *
  17. *   SYNOPSIS
  18. *        NewArgNode = cf_CloneArgument(ArgNode)
  19. *
  20. *        NEWARGNODE/N cf_CloneArgument(ARGNODE/N/A)
  21. *
  22. *   FUNCTION
  23. *        This function duplicates an argument node with all item nodes.
  24. *        Note the duplicated ArgNode is not added.
  25. *
  26. *   INPUTS
  27. *        ArgNode - The argument node to clone.
  28. *
  29. *   RESULT
  30. *        NewArgNode - The new argument node or NULL by failure.
  31. *
  32. *   EXAMPLE
  33. *        ...
  34. *        myArgNode = cf_NewArgument(myGrpNode, "ExampleArgument")
  35. *        cf_AddArgument(myGrpNode, cf_CloneArgument(myArgNode))
  36. *        ...
  37. *
  38. *        In the CF file:
  39. *
  40. *        ...
  41. *        [ExampleGroup]
  42. *
  43. *        ...
  44. *        ExampleArgument=
  45. *        ...
  46. *        ExampleArgument=
  47. *        ...
  48. *
  49. *   SEE ALSO
  50. *        cf_CloneGroup(), cf_CloneItem()
  51. *
  52. ******************************************************************************
  53. *
  54. */
  55.  
  56. UWORD rxcf_CloneArgument ( RX_FUNC_ARGS, CFArgument * ArgNode )
  57. {
  58.     CFArgument    * NewArgNode;
  59.  
  60.     if ( NewArgNode = cf_CloneArgument (ArgNode) )
  61.         *ResStr = CreateNumArgStrP (NewArgNode);
  62.     return (RC_OK);
  63. }
  64.  
  65. /****** rexxconfigfile.library/cf_CloneGroup *********************************
  66. *
  67. *   NAME
  68. *        cf_CloneGroup -- Copy a group node with all argument and item nodes.
  69. *
  70. *   SYNOPSIS
  71. *        NewGrpNode = cf_CloneGroup(GrpNode)
  72. *
  73. *        NEWGRPNODE/N cf_CloneGroup(GRPNDE/N/A)
  74. *
  75. *   FUNCTION
  76. *        This function duplicates a group node with all argument and item
  77. *        nodes. Note the duplicated GrpNode is not added.
  78. *
  79. *   INPUTS
  80. *        GrpNode - The group node to clone.
  81. *
  82. *   RESULT
  83. *        NewGrpNode - The new group node or NULL by failure.
  84. *
  85. *   EXAMPLE
  86. *        ...
  87. *        myGrpNode = cf_NewGroup(myHeader, "ExampleGroup")
  88. *        cf_AddGroup(myHeader, cf_CloneGroup(myGrpNode))
  89. *        ...
  90. *
  91. *        In the CF file:
  92. *
  93. *        ...
  94. *        [ExampleGroup]
  95. *        ...
  96. *        [ExampleGroup]
  97. *        ...
  98. *
  99. *   SEE ALSO
  100. *        cf_CloneArgument(), cf_CloneItem()
  101. *
  102. ******************************************************************************
  103. *
  104. */
  105.  
  106. UWORD rxcf_CloneGroup ( RX_FUNC_ARGS, CFGroup * GrpNode )
  107. {
  108.     CFGroup    * NewGrpNode;
  109.  
  110.     if ( NewGrpNode = cf_CloneGroup (GrpNode) )
  111.         *ResStr = CreateNumArgStrP (NewGrpNode);
  112.     return (RC_OK);
  113. }
  114.  
  115. /****** rexxconfigfile.library/cf_CloneItem **********************************
  116. *
  117. *   NAME
  118. *        cf_CloneItem -- Copy an item node.
  119. *
  120. *   SYNOPSIS
  121. *        NewItemNode = cf_CloneItem(ItemNode)
  122. *
  123. *        NEWITEMNODE/N cf_CloneItem(ITEMNODE/N/A)
  124. *
  125. *   FUNCTION
  126. *        This function duplicates an item node. Note the duplicated ItemNode
  127. *        is not added.
  128. *
  129. *   INPUTS
  130. *        ItemNode - The item node to clone.
  131. *
  132. *   RESULT
  133. *        NewItemNode - The new item node or NULL by failure.
  134. *
  135. *   EXAMPLE
  136. *        ...
  137. *        myItemNode = cf_NewItem(myArgNode, "ExampleItem",ITYP_STRING)
  138. *        cf_AddItem(myArgNode, cf_CloneItem(myItemNode))
  139. *        ...
  140. *
  141. *        In the CF file:
  142. *
  143. *        ...
  144. *        [ExampleGroup]
  145. *
  146. *        ...
  147. *        ExampleArgument="ExampleItem","ExampleItem"
  148. *        ...
  149. *
  150. *   SEE ALSO
  151. *        cf_CloneGroup(), cf_CloneArgument()
  152. *
  153. ******************************************************************************
  154. *
  155. */
  156.  
  157. UWORD rxcf_CloneItem ( RX_FUNC_ARGS, CFItem * ItemNode )
  158. {
  159.     CFItem    * NewItemNode;
  160.  
  161.     if ( NewItemNode = cf_CloneItem (ItemNode) )
  162.         *ResStr = CreateNumArgStrP (NewItemNode);
  163.     return (RC_OK);
  164. }
  165.